#pragma once

#include <QtWidgets/QMainWindow>
#include "ui_QtGuiApplication2.h"
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <qtimer.h>
#include "opencv2/features2d/features2d.hpp"
#include <opencv2/xfeatures2d/nonfree.hpp>
#include <opencv2/xfeatures2d.hpp>
#include <vector>
#include <iostream>
#include "ASiftDetector.h"
#include <opencv2/ml/ml.hpp> 
#include "ASiftDetector.h"
#include <ctime>
#include <qtimer.h>
#include <qtimezone.h>
using namespace cv;
using namespace std;
class QtGuiApplication2 : public QMainWindow
{
	Q_OBJECT

public:
	QtGuiApplication2(QWidget *parent = Q_NULLPTR);
	Mat image0;
	
private slots:
	void ReadFrame();
	void surf();
	void sift();
	void kaze();
	void Akaze();
	void brisk();
    void orb();
	void flann();
	void next();
private:
	Ui::QtGuiApplication2Class ui;
	VideoCapture capture;
	QTimer* timer;
	Mat frame;
	QImage* image;
    Ptr<Feature2D> feature;
	void run();
	ASiftDetector affine;
	void affine_run();
	QTime time;
};
